package com.abc.recycling.service;

import com.abc.recycling.domain.Message;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

public interface MessageService {
    
    /**
     * 创建消息
     */
    Message createMessage(Message message);
    
    /**
     * 标记消息为已读
     */
    void markAsRead(Long messageId);
    
    /**
     * 获取用户的所有消息
     */
    List<Message> getUserMessages(Long userId);
    
    /**
     * 获取用户的未读消息
     */
    List<Message> getUnreadMessages(Long userId);
    
    /**
     * 获取用户的未读消息数量
     */
    int getUnreadCount(Long userId);
    
    /**
     * 删除消息
     */
    void deleteMessage(Long messageId);
    
    /**
     * 发送订单状态变更通知
     */
    void sendOrderStatusNotification(Long userId, String orderNo, String oldStatus, String newStatus);
    
    /**
     * 发送系统通知
     */
    void sendSystemNotice(Long userId, String title, String content);
    
    /**
     * 搜索消息
     */
    List<Message> searchMessages(Long userId, String type, Integer status, String keyword, 
                               LocalDateTime startTime, LocalDateTime endTime);
    
    /**
     * 批量删除消息
     */
    void deleteMessages(List<Long> messageIds);
    
    /**
     * 批量标记消息为已读
     */
    void markMessagesAsRead(List<Long> messageIds);
    
    /**
     * 使用模板发送消息
     */
    void sendMessageWithTemplate(String templateCode, Long userId, Map<String, Object> variables);
    
    /**
     * 获取用户的未读消息数量
     */
    int countUnreadMessages(Long userId);
    
    Message getMessageById(Long messageId);
    
    void sendSystemMessage(String title, String content);
    
    void sendUserMessage(String title, String content, Long userId);
} 